# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/10/8
# @File : 21.E - Sequence Matching.py
# 那么题目所求就是：删除、增加、替换（修改） 的总量，也就是字符串编辑距离，经典问题!!!
def dp_solve():
    dp = [[0] * (m + 1) for _ in range(n + 1)]
    for i in range(1, n + 1):
        dp[i][0] = i
    for j in range(1, m + 1):
        dp[0][j] = j
    for i in range(1, n + 1):
        for j in range(1, m + 1):
            if (a[i - 1] == b[j - 1]):
                dp[i][j] = dp[i - 1][j - 1]
            else:
                dp[i][j] = min(dp[i - 1][j - 1] + 1, dp[i - 1][j] + 1, dp[i][j - 1] + 1)
                #             两个都保留,相当于一次替换 、  删除a[i]，一次删除操作、删除b[j]，一次删除操作
    return dp[-1][-1]
# dp[i][j]表示字符串A的前i个，字符串B的前j个，组成相同长度的字符串的前提下，x+y的最小值
# 其实编辑距离中的插入等于对另一个字符串删除b[j]，一次删除操作
# 所有操作都是对称的，所以对两个字符串的删除可以看作对一个字符串的删除和增加。
if __name__ == '__main__':
    n,m = map(int,input().split())
    a = [int(i) for i in input().split()]
    b = [int(i) for i in input().split()]
    ans = dp_solve()
    print(ans)
